home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-12-21 | 5.5 KB | 125 lines | [TEXT/CWIE] |
- UNIT FileCopy;
-
- { Apple Macintosh Developer Technical Support }
- { }
- { FileCopy: A robust, general purpose file copy routine. }
- { by Jim Luther, Apple Developer Technical Support Emeritus }
- { }
- { File: FileCopy.p }
- { }
- { Copyright © 1992-1995 Apple Computer, Inc. }
- { All rights reserved. }
- { }
- { You may incorporate this sample code into your applications without }
- { restriction, though the sample code has been provided "AS IS" and the }
- { responsibility for its operation is 100% yours. However, what you are }
- { not permitted to do is to redistribute the source as "DSC Sample Code" }
- { after having made changes. If you're going to re-distribute the source, }
- { we require that you make it clear in the source that the code was }
- { descended from Apple Sample Code, but that you've made changes. }
-
-
- INTERFACE
-
- USES
- Files;
-
- {***************************************************************************}
-
-
- FUNCTION FileCopy (srcVRefNum: Integer;
- srcDirID: LongInt;
- srcName: Str255;
- dstVRefNum: Integer;
- dstDirID: LongInt;
- dstPathname: StringPtr;
- copyName: StringPtr;
- copyBufferPtr: Ptr;
- copyBufferSize: LongInt;
- preflight: Boolean): OSErr;
- { Use FileCopy to duplicate a file and optionally rename it. }
- { Since the PBHCopyFile routine is only available on some }
- { AFP server volumes under specific conditions, this routine }
- { either uses PBHCopyFile, or does all of the work PBHCopyFile }
- { does. The srcVRefNum, srcDirID and srcName are used to }
- { determine the location of the file to copy. The dstVRefNum }
- { dstDirID and dstPathname are used to determine the location of }
- { the destination directory. If copyName <> NIL, then it points }
- { to the name of the new file. If copyBufferPtr <> NIL, it }
- { points to a buffer of copyBufferSize that is used to copy }
- { the file's data. The larger the supplied buffer, the }
- { faster the copy. If copyBufferPtr = NIL, then this routine }
- { allocates a buffer in the application heap. If you pass a }
- { copy buffer to this routine, make its size a multiple of 512 }
- { ($200) bytes for optimum performance. }
- { }
- { srcVRefNum input: Source volume specification. }
- { srcDirID input: Source directory ID. }
- { srcName input: Source file name. }
- { dstVRefNum input: Destination volume specification. }
- { dstDirID input: Destination directory ID. }
- { dstPathname input: Pointer to destination directory name, or }
- { nil when dstDirID specifies a directory. }
- { copyName input: Points to the new file name if the file is }
- { to be renamed or nil if the file isn't to }
- { be renamed. }
- { copyBufferPtr input: Points to a buffer of copyBufferSize that }
- { is used the i/o buffer for the copy or }
- { nil if you want FileCopy to allocate its }
- { own buffer in the application heap. }
- { copyBufferSize input: The size of the buffer pointed to }
- { by copyBufferPtr. }
- { preflight input: If true, FileCopy makes sure there are enough }
- { allocation blocks on the destination volume to }
- { hold both the data and resource forks before }
- { starting the copy. }
-
-
- {***************************************************************************}
-
-
- FUNCTION FSpFileCopy ({CONST}VAR srcSpec: FSSpec;
- {CONST}VAR dstSpec: FSSpec;
- copyName: StringPtr;
- copyBufferPtr: Ptr;
- copyBufferSize: LongInt;
- preflight: Boolean): OSErr;
- { Use FSpFileCopy to duplicate a file and optionally rename it. }
- { Since the PBHCopyFile routine is only available on some }
- { AFP server volumes under specific conditions, this routine }
- { either uses PBHCopyFile, or does all of the work PBHCopyFile }
- { does. The srcSpec is used to }
- { determine the location of the file to copy. The dstSpec is }
- { used to determine the location of the }
- { destination directory. If copyName <> NIL, then it points }
- { to the name of the new file. If copyBufferPtr <> NIL, it }
- { points to a buffer of copyBufferSize that is used to copy }
- { the file's data. The larger the supplied buffer, the }
- { faster the copy. If copyBufferPtr = NIL, then this routine }
- { allocates a buffer in the application heap. If you pass a }
- { copy buffer to this routine, make its size a multiple of 512 }
- { ($200) bytes for optimum performance. }
- { }
- { srcSpec input: An FSSpec record specifying the source file. }
- { dstSpec input: An FSSpec record specifying the destination }
- { directory. }
- { copyName input: Points to the new file name if the file is }
- { to be renamed or nil if the file isn't to }
- { be renamed. }
- { copyBufferPtr input: Points to a buffer of copyBufferSize that }
- { is used the i/o buffer for the copy or }
- { nil if you want FileCopy to allocate its }
- { own buffer in the application heap. }
- { copyBufferSize input: The size of the buffer pointed to }
- { by copyBufferPtr. }
- { preflight input: If true, FSpFileCopy makes sure there are }
- { enough allocation blocks on the destination }
- { volume to hold both the data and resource forks }
- { before starting the copy. }
-
-
- {***************************************************************************}
-
- IMPLEMENTATION
-
- END.